<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">

    <xsl:attribute-set name="book.titlepage.recto.style">
        <xsl:attribute name="font-size">2em</xsl:attribute>
        <xsl:attribute name="font-family">
            <xsl:value-of select="$title.font.family" />
        </xsl:attribute>
        <xsl:attribute name="font-weight">bold</xsl:attribute>
        <xsl:attribute name="color">
            <xsl:value-of select="$title.font.color" />
        </xsl:attribute>
        <xsl:attribute name="text-align">
            <xsl:text>start</xsl:text>
        </xsl:attribute>
        <xsl:attribute name="hyphenate">false</xsl:attribute>
    </xsl:attribute-set>
    
    <xsl:attribute-set name="book.titlepage.verso.style">
        <xsl:attribute name="color">
            <xsl:value-of select="$title.font.color" />
        </xsl:attribute>
        <xsl:attribute name="font-size">10pt</xsl:attribute>
        <xsl:attribute name="text-align">
            <xsl:text>start</xsl:text>
        </xsl:attribute>
        <xsl:attribute name="hyphenate">false</xsl:attribute>
    </xsl:attribute-set>
    
    <xsl:attribute-set name="article.titlepage.recto.style">
        <xsl:attribute name="font-size">2em</xsl:attribute>
        <xsl:attribute name="font-family">
            <xsl:value-of select="$title.font.family" />
        </xsl:attribute>
        <xsl:attribute name="font-weight">bold</xsl:attribute>
        <xsl:attribute name="color">
            <xsl:value-of select="$title.font.color" />
        </xsl:attribute>
        <xsl:attribute name="text-align">
            <xsl:text>start</xsl:text>
        </xsl:attribute>
        <xsl:attribute name="hyphenate">false</xsl:attribute>
    </xsl:attribute-set>
    
    <xsl:attribute-set name="article.titlepage.verso.style">
        <xsl:attribute name="color">
            <xsl:value-of select="$title.font.color" />
        </xsl:attribute>
        <xsl:attribute name="font-size">10pt</xsl:attribute>
        <xsl:attribute name="text-align">
            <xsl:text>start</xsl:text>
        </xsl:attribute>
        <xsl:attribute name="hyphenate">false</xsl:attribute>
    </xsl:attribute-set>

    <xsl:attribute-set name="list.of.tables.titlepage.recto.style"
        use-attribute-sets="rule.after.title.properties">
        <xsl:attribute name="color">
            <xsl:value-of select="$title.font.color" />
        </xsl:attribute>
    </xsl:attribute-set>

    <xsl:attribute-set name="list.of.figures.titlepage.recto.style"
        use-attribute-sets="rule.after.title.properties">
        <xsl:attribute name="color">
            <xsl:value-of select="$title.font.color" />
        </xsl:attribute>
    </xsl:attribute-set>

    <xsl:attribute-set name="part.titlepage.recto.style">
      <xsl:attribute name="text-align">start</xsl:attribute>
      <xsl:attribute name="font-size">3em</xsl:attribute>
      <xsl:attribute name="space-before">2em</xsl:attribute>
      <xsl:attribute name="font-weight">bold</xsl:attribute>
      <xsl:attribute name="font-family">
        <xsl:value-of select="$title.font.family"/>
      </xsl:attribute>
        <xsl:attribute name="color">
            <xsl:value-of select="$title.font.color" />
        </xsl:attribute>
    </xsl:attribute-set>
    
    <xsl:attribute-set name="table.of.contents.titlepage.recto.style"
        use-attribute-sets="rule.after.title.properties">
        <xsl:attribute name="color">
            <xsl:value-of select="$title.font.color" />
        </xsl:attribute>
    </xsl:attribute-set>

    <xsl:template match="copyright" mode="titlepage.mode">
        <xsl:element name="fo:block" use-attribute-sets="rule.after.title.properties">
            <xsl:attribute name="space-after.minimum">1.2em</xsl:attribute>
            <xsl:call-template name="gentext">
                <xsl:with-param name="key" select="'Copyright'" />
            </xsl:call-template>
            <xsl:call-template name="gentext.space" />
            <xsl:call-template name="dingbat">
                <xsl:with-param name="dingbat">copyright</xsl:with-param>
            </xsl:call-template>
            <xsl:call-template name="gentext.space" />
            <xsl:call-template name="copyright.years">
                <xsl:with-param name="years" select="year" />
                <xsl:with-param name="print.ranges" select="$make.year.ranges" />
                <xsl:with-param name="single.year.ranges" select="$make.single.year.ranges" />
            </xsl:call-template>
            <xsl:call-template name="gentext.space" />
            <xsl:apply-templates select="holder" mode="titlepage.mode" />
        </xsl:element>
    </xsl:template>

    <xsl:template match="date" mode="book.titlepage.recto.auto.mode">
        <xsl:element name="fo:block">
            <xsl:apply-templates mode="book.titlepage.recto.auto.mode" />
        </xsl:element>
    </xsl:template>

    <xsl:template match="edition" mode="book.titlepage.recto.auto.mode">
        <xsl:element name="fo:block">
            <xsl:apply-templates mode="book.titlepage.recto.auto.mode" />
                <xsl:if test="ancestor-or-self::*/@status='draft'">
                    <xsl:text> [</xsl:text>
                        <xsl:call-template name="gentext">
                            <xsl:with-param name="key">Draft</xsl:with-param>
                        </xsl:call-template>
                    <xsl:text>]</xsl:text>
                </xsl:if>
        </xsl:element>
    </xsl:template>

    <xsl:template match="legalnotice" mode="book.titlepage.verso.auto.mode">
        <fo:block font-size="0.8em">
            <xsl:apply-templates select="." mode="book.titlepage.verso.mode" />
        </fo:block>
    </xsl:template>
    
    <xsl:template match="legalnotice" mode="article.titlepage.verso.mode">
        <fo:block font-size="0.8em">
            <xsl:apply-templates mode="article.titlepage.verso.mode" />
        </fo:block>
    </xsl:template>

    <xsl:template match="legalnotice" mode="titlepage.mode">
        <xsl:variable name="id">
            <xsl:call-template name="object.id" />
        </xsl:variable>
        <fo:block id="{$id}" space-before="1em">
            <xsl:if test="title">
                <!-- FIXME: add param for using default title? -->
                <xsl:call-template name="formal.object.heading" />
            </xsl:if>
            <xsl:apply-templates mode="titlepage.mode" />
        </fo:block>
    </xsl:template>

    <xsl:template match="orgname" mode="book.titlepage.recto.auto.mode">
        <xsl:element name="fo:block">
            <xsl:apply-templates mode="book.titlepage.recto.auto.mode" />
        </xsl:element>
    </xsl:template>

    <xsl:template match="productname" mode="book.titlepage.recto.auto.mode">
        <xsl:element name="fo:block">
            <xsl:attribute name="font-size">1.4em</xsl:attribute>
            <xsl:apply-templates mode="book.titlepage.recto.auto.mode" />
        </xsl:element>
    </xsl:template>

    <xsl:template match="productnumber" mode="book.titlepage.recto.auto.mode">
        <xsl:element name="fo:block">
            <xsl:text>Version&#xa0;</xsl:text>
            <xsl:apply-templates mode="book.titlepage.recto.auto.mode" />
        </xsl:element>
    </xsl:template>

    <xsl:template match="pubdate|date" mode="book.titlepage.verso.auto.mode">
        <fo:block space-before="1em">
            <xsl:apply-templates select="." mode="book.titlepage.verso.mode" />
        </fo:block>
    </xsl:template>

    <xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode">
        <xsl:element name="fo:block">
            <xsl:apply-templates mode="book.titlepage.recto.auto.mode" />
        </xsl:element>
    </xsl:template>
    
    <xsl:template match="title" mode="book.titlepage.recto.auto.mode">
        <xsl:element name="fo:block">
            <xsl:call-template name="division.title">
                <xsl:with-param name="node" select="ancestor-or-self::book[1]" />
            </xsl:call-template>
        </xsl:element>
    </xsl:template>
    
    <xsl:template match="title" mode="part.titlepage.recto.auto.mode">
    <!-- FIXME: make more visually-appealing titlepage  -->
        <xsl:call-template name="company.logo">
            <xsl:with-param name="size">1in</xsl:with-param>
        </xsl:call-template>
        <xsl:element name="fo:block"
            use-attribute-sets="part.titlepage.recto.style rule.after.title.properties">
            <xsl:call-template name="division.title">
                <xsl:with-param name="node" select="ancestor-or-self::part[1]"/>
            </xsl:call-template>
        </xsl:element>
    </xsl:template>

    <xsl:template match="title" mode="article.titlepage.recto.mode">
        <xsl:element name="fo:block">
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>
    
    <xsl:template match="productname" mode="article.titlepage.recto.mode">
        <xsl:element name="fo:block">
            <xsl:attribute name="font-size">1.4em</xsl:attribute>
            <xsl:apply-templates  />
        </xsl:element>
    </xsl:template>
    
    <xsl:template match="productnumber" mode="article.titlepage.recto.mode">
        <xsl:element name="fo:block">
            <xsl:text>Version&#xa0;</xsl:text>
            <xsl:apply-templates />
        </xsl:element>
    </xsl:template>
    
    <xsl:template match="pubdate|date" mode="article.titlepage.verso.mode">
        <fo:block space-before="1em">
            <xsl:apply-templates />
        </fo:block>
    </xsl:template>
    
</xsl:stylesheet>
